#ifndef __ANIMATIONS_H
#define __ANIMATIONS_H
#include "weather.h"

static int anim_cont_x_default = DISPLAY_CONTENT_X_START_DEFAULT;
static int anim_icon_y_default = DISPLAY_ICON_Y_START_DEFAULT;

void anim_init();

void wifi_search_anim(int x, int y);
void wifi_check_anim(int x, int y);

void wifi_search_anim_v2(const char *ssid, const char *ip);
void wifi_check_anim_v2(const char *ssid,const char *ip);

void time_sync_anim(int x, int y);
void time_sync_anim_v2();

void anim_time(char *tmp, bool flag_show_colon);
void anim_date(char *tmp, char *week);
void anim_raining_code();

// 最大下落沙子数量
#define MAX_SAND_PARTICLES 10

typedef struct
{
  uint8_t x;        // 沙粒所在列（0-7）
  int y;            // 沙粒当前Y坐标（-1表示未激活，0-31为有效位置）
  uint8_t trail[3]; // 存储最近3个Y坐标（拖影轨迹）
} sand_particle_t;
typedef struct
{
  unsigned long startTime; // 开始时间(ms)
  int duration;            // 总时长(s)
  int remaining;           // 剩余时间(s)
  sand_particle_t fallingSand[MAX_SAND_PARTICLES];
} timer_state_t;
bool anim_timer(timer_state_t *timer);
void timer_state_init(timer_state_t *timer, int duration); // seconds

void anim_weather(weather_t *we, int idx, bool init);
void anim_aht20(float temp, float humidity);

#endif